package main

import (
	"fmt"
	"sort"
)

// 定义一个结构体 Person，它有两个字段：firstName 和 lastName，为 []Person 定义类型 Persons 。让 Persons 实现 Sorter 接口并进行测试。

type Person struct {
	givenName, surName string
}

type Persons []Person

// 切片本身就是引用类型
func (p Persons) Len() int { return len(p) }
func (p Persons) Less(i, j int) bool {
	iname := p[i].surName + " " + p[i].givenName
	jname := p[j].surName + " " + p[j].givenName
	return iname < jname
}
func (p Persons) Swap(i, j int) {
	p[i], p[j] = p[j], p[i]
}

func main() {
	li := Person{"李", "大钊"}
	lei := Person{"雷", "锋"}
	fei := Person{"张", "飞"}
	p := Persons{lei, li, fei}
	sort.Sort(p)
	for _, ren := range p {
		fmt.Println(ren)
	}
}
